home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 2.iso / STUTTGART / EMULATOR / SID2WAV / !Sid2Wav / docs / Developer < prev    next >
Text File  |  1997-06-23  |  8KB  |  197 lines

  1. ###  A beta release is just a snapshot of my working directory.
  2. ###  Any applied changes have not been further examined.
  3.  
  4.  
  5. CHANGES from 1.32.1 to 1.32.2:
  6.  
  7. * Corrected shared library in Un*x Makefiles.
  8.  
  9. * Big-endian file conversion fixed.
  10.  
  11. + Merged AmigaOS conditional code.
  12.  
  13.  
  14. CHANGES from 1.31-beta to 1.32:
  15.  
  16. * Minor quality fix on digi emulation in high/low order.
  17.   Thanks to Ulf Jaenicke-Roessler for the mention.
  18.   
  19. * Sync+Ring click fix. Thanks for the excellent tip, Kristoffer Johansson !
  20.  
  21. + Implemented readable SID + operator 3 (frame based).
  22.  
  23. + Added additional sidtune constructor, which takes one-file format sidtune
  24.   data from a memory buffer.
  25.  
  26.  
  27. CHANGES from 1.30-pl6 to 1.31-beta:
  28.  
  29. + Implementation of short temporary attack in ADSR volume envelope. Under
  30.   normal circumstances this would *require* a precise cycle-based 6510- and
  31.   ADSR-emulation. (e.g. drax/jsschrst.dat)
  32.   
  33.   [Note: VACSID and Frodo don't handle it. CCS64, C64S do, but are not 100%
  34.   right either.]
  35.  
  36. + Smarter locking/unlocking of noise waveform.
  37.  
  38.  
  39. CHANGES from 1.27.4 to 1.30:
  40.  
  41. + Most wanted feature: SID chip clock speed now can be set to either PAL or NTSC.
  42.   This affects the pitch but not the song speed unless "force song speed" is
  43.   chosen, which will force the C64 clock to be equal to the SID clock, setting
  44.   any PAL song to NTSC and vice versa. NTSC users now can listen to sids with the
  45.   intended song speed (the one preset for each sidtune), but the sound of an NTSC
  46.   SID chip. Clock speed checkbox's name still should be "C64 clock speed".
  47.  
  48. - Dropped ``forceClockSpeed''. More below.
  49.  
  50. + Improved dynamic ADSR envelope emulation. A few sidtunes were dropping notes
  51.   since v1.27. If some still do, they are most likely bad rips, like the one
  52.   already found. Check the next HVSC update for working ones.
  53.  
  54. + New measured volume mode (default, but experimental). Replaces previous
  55.   "measured master volume" mode, since that one did not achieve what I wanted
  56.   it to, anyway. Related checkbox should be renamed to just ``measured volume''.
  57.  
  58. + Now setVoiceVolume() accepts a further argument, the relative voice volume from
  59.   0 (mute) to 256 (max). This also makes it possible to mute the centered auto
  60.   panning.
  61.   Previously you most likely used own code similar to this:
  62.  
  63.     voice_volume = left_or_right_level * new_voice_volume / max_voice_volume
  64.     where: 0 <= new_voice_volume <= max_voice_volume
  65.     e.g.: 0 <= x <= 256, half volume: x = 128
  66.  
  67.   If you don't feel like changing that code, use 256=max when calling 
  68.   setVoiceVolume() in your code anywhere.
  69.  
  70. * Auto-panning default: Reset 4th voice to middle position.
  71.  
  72. o Stereo volume control documentation update.
  73.  
  74.   In stereo mode and panning modes either modulate both, left and right, levels
  75.   with the voice_volume technique from above or via the new argument of
  76.   setVoiceVolume().
  77.   
  78.   SIDEMU_FULLPANNING:
  79.  
  80.      Slider position
  81.          Voice A
  82.   Left              Right
  83.    X...................        : full left, L=255/R=0
  84.    ...................X        : full right, L=0/R=255
  85.    ..........X.........        : middle, L=128/R=127 or L=127/R=128
  86.    ....................        : mute, L=0/R=0
  87.    .....X..............        : more left than right, L=200/R=55
  88.  
  89.   But also and *only* in FULLPANNING mode, but most likely not used, you can
  90.   set any possible combination of volume levels out of 0<=x<=255, for instance:
  91.  
  92.    X..................X        : louder middle, L=255/R=255
  93.    X.........x.........        : full left and 50% right, L=255/R=128
  94.    
  95.   SIDEMU_VOLCONTROL  info was also unclear IMHO. setVoiceVolume() does not anymore
  96.   check the correctness of the given volume settings, since this would limit the
  97.   possibilities badly. But it does not do anything and returns false upon an invalid
  98.   voice number, voice_volume > 256 or no mixing mode, respectively.
  99.  
  100.   Two voices should build a pair, satisfying the equation:
  101.   
  102.     left(voice_A) + left(voice_B) <= 255
  103.  
  104.   Generally, the equations:
  105.     
  106.     sum leftLevel(i) <= 512       i=[1,2,3,4]
  107.     sum rightLevel(i) <= 512      i=[1,2,3,4]
  108.   
  109.   must be satisfied, because only a maximum of two voices can be mixed
  110.   to one physical audio channel.
  111.   
  112.   Building pairs can be, but don't has to be, done like this:
  113.   
  114.     left(voice_A) = right(voice_B)
  115.     right(voice_A) = left(voice_B)
  116.     left(voice_A) + right(voice_A) <= 255
  117.     left(voice_B) + right(voice_B) <= 255
  118.  
  119.   It is not possible to position both from a pair of voices on the same side.
  120.  
  121.                   Slider Pos.
  122.                 Pair of voices
  123.             Left              Right
  124.   Voice A:   X...................        : full left, L=255/R=0
  125.   Voice B:   ...................X        : full right, L=0/R=255
  126.   
  127.   Voice A:   ....X...............        : L=200/R=55
  128.   Voice B:   ...............X....        : L=55/R=200
  129.  
  130.   Voice A:   .........X..........        : middle, L=128/R=127
  131.   Voice B:   .........X..........        : middle, L=127/R=128 (or vice versa)
  132.  
  133.   Voice A:   ...............X....        : L=55/R=200
  134.   Voice B:   ....X...............        : L=200/R=55
  135.  
  136.   Voice A:   ...................X        : full right, L=0/R=255
  137.   Voice B:   X...................        : full left, L=255/R=0
  138.  
  139.   Side note: You could also mute voice_A and then could safely do
  140.   left(voice_B)+right(voice_B) > 255, but you most likely will never do so,
  141.   as this would require a much more complex mixer.
  142.   
  143. o The following was done due to consistency and because I have replaced any internal
  144.   constants with the external configuration constants and because I think the name
  145.   "configuration" suits better than "specifications", which I found confusing and
  146.   unreadable. These changes build upon everything I found to be better in the
  147.   now obsolete pre-2.0 testing engine.
  148.   
  149.   Single header file to include has not changed and still is ``player.h'' only.
  150.  
  151. o Dropped directories mos_6510/ and mos_6581/. Put all the emulation stuff into emu/. 
  152.   Some files became obsolete.
  153.   *** Do the renaming in this order and you'll likely be safe !
  154.   
  155.    o Renamed class ``sidEmuConfig'' to ``emuEngine''.
  156.    o Renamed structure ``sidEmuSpecs'' to ``emuConfig''.
  157.    o Renamed header file ``sidemu.h'' to ``emucfg.h''.
  158.      All configuration information resides in here.
  159.    o Renamed member function ``setSpecs'' to ``setConfig''.
  160.    o Renamed member function ``returnSpecs'' to ``returnConfig''.
  161.    o Dropped class ``mpuEmu''. Integrated its functionality into the
  162.      ``emuEngine'' class. Also affects sidEmuFillBuffer() calls.
  163.    o Renamed ``MPU_PAL_CLOCK'' to ``SIDTUNE_CLOCK_PAL''.
  164.    o Renamed ``MPU_NTSC_CLOCK'' to ``SIDTUNE_CLOCK_NTSC''.
  165.    o Above was named SIDTUNE_* because it is the same enum constant as in the
  166.      sidtune format support.
  167.    o Hope I didn't miss anything here.
  168.  
  169. ! Changed the behaviour of the emulator engine configuration class in case of
  170.   invalid settings. Although the return value still is ``false'', the engine
  171.   will not be locked and neither be moved into an unusable state. Be aware that
  172.   this is not really a difference to before, because you are able to make
  173.   settings different than you made for your audio driver (e.g. replaying stereo
  174.   SID data on a mono soundcard set up).
  175.   At any time you can read out the current settings using returnConfig().
  176.   Consider the ``false'' return value of functions like setVoiceVolume() or
  177.   setConfig() as a hint and debugging aid. Basically, you should only write
  178.   valid settings to the emulator engine, so your application never receives
  179.   a ``false''.
  180.  
  181. - Dropped ``forceClockSpeed''. Now is ``forceSongSpeed'' and was moved to the 
  182.   ``emuConfig'' structure. If ``true'' it overrides the sidtune song speed and
  183.   sets the C64 clock to the SID clock. Drop the ``forceClockSpeed'' argument
  184.   from every call to sidEmuInitializeSong().
  185.  
  186.   Changing ``clockSpeed'' will affect the playback upon the next call to
  187.   setConfig().
  188.   
  189.   Changing ``forceSongSpeed'' will affect the playback upon the next call to
  190.   sidEmuInitializeSong().
  191.  
  192. * Typos in (abandoned) portable fixpoint mode (DIRECT_FIXPOINT off).
  193.  
  194. * By default set a random seed value from a virtual member function using <time.h>.
  195.  
  196.  
  197.